﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using InmobiliariaNegocio;

namespace InmobiliariaWeb
{
    public partial class _Default : System.Web.UI.Page
    {
        enum Grilla { Accion, Numero, Localidad, Direccion, Ambientes, TipoOp, Reservado, Monto };

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Session["inmobiliaria"] = Inmobiliaria.CrearInmobiliaria();

                cargarGrilla();
            }

            lblRespuesta.Text = "";
        }

        protected void grvDisponibles_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        protected void grvDisponibles_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int i = int.Parse(e.CommandArgument.ToString());
            float montoReserva = float.Parse(grvDisponibles.Rows[i].Cells[(int)Grilla.Monto].Text);
            int numero = int.Parse(grvDisponibles.Rows[i].Cells[(int)Grilla.Numero].Text);

            Inmueble inmu = ((Inmobiliaria)Session["inmobiliaria"]).buscarInmueble(numero);

            Reserva reserva = new Reserva(numero, DateTime.Now, montoReserva, int.Parse(Session["dni"].ToString()), inmu.Numero);

            reserva.guardarseBD();
            reserva.reservarInmuebleBD();

            if (((Inmobiliaria)Session["inmobiliaria"]).validarReserva(reserva))
            {
                ((Inmobiliaria)Session["inmobiliaria"]).modificarInmueble(reserva.Inmueble, true, "");
                lblRespuesta.Text = ((Inmobiliaria)Session["inmobiliaria"]).agregarReserva(reserva);
            }
            else
               lblRespuesta.Text = "El inmueble se encuentra reservado.";

            cargarGrilla();
        }

        private void cargarGrilla()
        {
            grvDisponibles.DataSource = ((Inmobiliaria)Session["inmobiliaria"]).listarInmueblesDisponibles();
            grvDisponibles.DataBind();

            if (grvDisponibles.Rows.Count <= 0)
                lblRespuesta.Text = "No hay propiedades para reservar.";
          
        }

        protected void btnIngresar_Click(object sender, EventArgs e)
        {
            Cliente cli = ((Inmobiliaria)Session["inmobiliaria"]).buscarCliente(int.Parse(txtCliente.Text), txtPassword.Text);

            if (cli == null)
                lblRespuesta.Text = "Cliente o Password inexistentes, para poder reservar debe ser cliente y tener una clave válida.<BR>Si quiere reservar un inmueble llame al 4332-2334.<BR>Muchas gracias.";
            else
            {
                lblCliente.Visible = false;
                lblContraseña.Visible = false;
                txtPassword.Visible = false;
                btnIngresar.Visible = false;

                Session["dni"] = cli.Dni;
                lblNombre.Text = cli.Nombre;
                lblNombre.Visible = true;
                lblBienvenido.Visible = true;

                txtCliente.Visible = false;
                grvDisponibles.Visible = true;
                cargarGrilla();
            }

        }

    }
}
